<?php

 // Carga de Queryx
 require_once("core/queryx.php");


 /**
  * ---------------------------------------------------------------
  * INSCRIPCION CLASE 
  * ---------------------------------------------------------------
  * Funciones necesarias relacionadas con el inscripcion , esta clase necesita Queryx y esta a su vez
  * necesita de la clase Connect (en la cual deben especificarse los parametros de conexión)
  * están localizadas en engine.
  * 
  * @author Sergio Morlán Páramo
  */
 class Inscripcion_class extends Queryx {

     private $id, $alumno, $grupo, $fechaInscripcion, $periodo, $pagado, $becado, $status;



     /**
      * ---------------------------------------------------------------
      * CONSTRUCTOR
      * ---------------------------------------------------------------
      */
     public function __construct($p_id = FALSE) {
         parent::__construct();
         if ($p_id)
             return $this->xget($p_id);
         else
             return FALSE;

     }




     /*
      * ---------------------------------------------------------------
      * SET METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Vamos a colocar el atributo id
      * @param String $p_id Attr
      */
     public function set_id($p_id) {
         $this->id = $p_id;

     }




     /**
      * Vamos a colocar el atributo alumno
      * @param String $p_alumno Attr
      */
     public function set_alumno($p_alumno) {
         $this->alumno = $p_alumno;

     }




     /**
      * Vamos a colocar el atributo grupo
      * @param String $p_grupo Attr
      */
     public function set_grupo($p_grupo) {
         $this->grupo = $p_grupo;

     }




     /**
      * Vamos a colocar el atributo fechaInscripcion
      * @param String $p_fechaInscripcion Attr
      */
     public function set_fechaInscripcion($p_fechaInscripcion) {
         $this->fechaInscripcion = $p_fechaInscripcion;

     }




     /**
      * Vamos a colocar el atributo periodo
      * @param String $p_periodo Attr
      */
     public function set_periodo($p_periodo) {
         $this->periodo = $p_periodo;

     }




     /**
      * Vamos a colocar el atributo pagado
      * @param String $p_pagado Attr
      */
     public function set_pagado($p_pagado) {
         $this->pagado = $p_pagado;

     }




     /**
      * Vamos a colocar el atributo becado
      * @param String $p_becado Attr
      */
     public function set_becado($p_becado) {
         $this->becado = $p_becado;

     }




     /**
      * Vamos a colocar el atributo status
      * @param String $p_status Attr
      */
     public function set_status($p_status) {
         $this->status = $p_status;

     }




     /*
      * ---------------------------------------------------------------
      * GET METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Vamos a obtener el atributoid
      * @return String $this->id
      */
     public function get_id() {
         return $this->id;

     }




     /**
      * Vamos a obtener el atributoalumno
      * @return String $this->alumno
      */
     public function get_alumno() {
         return $this->alumno;

     }




     /**
      * Vamos a obtener el atributogrupo
      * @return String $this->grupo
      */
     public function get_grupo() {
         return $this->grupo;

     }




     /**
      * Vamos a obtener el atributofechaInscripcion
      * @return String $this->fechaInscripcion
      */
     public function get_fechaInscripcion() {
         return $this->fechaInscripcion;

     }




     /**
      * Vamos a obtener el atributoperiodo
      * @return String $this->periodo
      */
     public function get_periodo() {
         return $this->periodo;

     }




     /**
      * Vamos a obtener el atributopagado
      * @return String $this->pagado
      */
     public function get_pagado() {
         return $this->pagado;

     }




     /**
      * Vamos a obtener el atributobecado
      * @return String $this->becado
      */
     public function get_becado() {
         return $this->becado;

     }




     /**
      * Vamos a obtener el atributostatus
      * @return String $this->status
      */
     public function get_status() {
         return $this->status;

     }




     /*
      * ---------------------------------------------------------------
      * BASIC METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Inserta en INSCRIPCION
      * Previamente colocados sus atributos con métodos Set
      *
      */
     public function xnew() {
         $query = "INSERT INTO `INSCRIPCION` (`id`, `alumno`, `grupo`, `fechaInscripcion`, `periodo`, `pagado`, `becado`, `status`) VALUES ('" . $this->id . "', '" . $this->alumno . "', '" . $this->grupo . "', '" . $this->fechaInscripcion . "', '" . $this->periodo . "', '" . $this->pagado . "', '" . $this->becado . "', '" . $this->status . "'); ";
         return $this->run_queryx($query);

     }




     /**
      * Actualiza todos los campos de INSCRIPCION
      * Previamente colocados sus atributos actualizados con métodos Set 
      *
      * @param int $p_idId de INSCRIPCION
      */
     public function xchange($p_id) {
         $query = "UPDATE `INSCRIPCION` SET `alumno` = '" . $this->alumno . "', `grupo` = '" . $this->grupo . "', `fechaInscripcion` = '" . $this->fechaInscripcion . "', `periodo` = '" . $this->periodo . "', `pagado` = '" . $this->pagado . "', `becado` = '" . $this->becado . "', `status` = '" . $this->status . "' WHERE id = '" . $p_id . "';";
         return $this->run_queryx($query);

     }




     /**
      * Elimina definitivamente de la base de datos INSCRIPCION
      *
      * @param int $p_idId de INSCRIPCION
      */
     public function xdel($p_id) {
         $query = "DELETE FROM `INSCRIPCION` WHERE `id` = '" . $p_id . "';";
         return $this->run_queryx($query);

     }




     /*
      * ---------------------------------------------------------------
      * SEARCH METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Busca y Devuleve un único registro en INSCRIPCION
      * @access private
      * @param int $p_idId de INSCRIPCION
      * @param int $p_field campo UNIQUE o PRIMARY KEY de INSCRIPCION
      */
     public function xget($p_id, $p_field=FALSE, $alumno=FALSE, $grupo=FALSE) {
         $index = "id";
         if ($p_field)
             $index = $p_field;

         if ($p_id)
             $query = "SELECT * FROM `INSCRIPCION` WHERE `$index` = '" . $p_id . "' LIMIT 1;";

         if ($alumno AND $grupo)
             $query = "SELECT * FROM `INSCRIPCION` WHERE `alumno`='" . $alumno . "' AND `grupo`='" . $grupo . "';";
         $result = $this->run_queryx($query);

         if ($this->get_total_rows() > 0) {
             $this->xassign($result);
             return TRUE;
         }
         return FALSE;

     }




     /**
      * Busca y Devuleve todos registro en INSCRIPCION
      * @param Array $p_campos Arreglo de los Campos a Seleccionar
      * @param String $p_filtro Cadena con los filtros para la búsqueda
      * @return Mixed
      */
     public function xgets($p_campos=FALSE, $p_filtro=FALSE, $p_order=FALSE) {
         $inscripcion = NULL;
         $campos = "*";
         $filtro = "";
         $order = "";
         if ($p_campos) {
             $campos = "`id`,";
             if (is_array($p_campos)) {
                 for ($i = 0; $i < count($p_campos); $i++) {
                     $campos .= "`" . $p_campos[$i] . "`";
                     if ($i < count($p_campos) - 1) {
                         $campos .=", ";
                     }
                 }
             } else {
                 $campos .= "`" . $p_campos . "` ";
             }
         }
         if ($p_filtro)
             $filtro = "WHERE " . $p_filtro;
         if ($p_order)
             $order = "ORDER BY `" . $p_order . "`";
         $query = "SELECT $campos FROM `INSCRIPCION` $filtro $order;";
         $result = $this->run_queryx($query);
         if ($this->get_total_rows() > 0) {
             while ($row = mysql_fetch_array($result)) {
                 $inscripcion[] = new Inscripcion_class($row[0]);
             }
             return $inscripcion;
         }
         return FALSE;

     }




     /*
      * ---------------------------------------------------------------
      * JOIN METHODS
      * ---------------------------------------------------------------
      */




     /*
      * ---------------------------------------------------------------
      * LEAVE METHODS
      * ---------------------------------------------------------------
      */

     /*
      * ---------------------------------------------------------------
      * ASSIGN METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Asignación Coloca todos los atributos del objeto encontrado mediante xget()
      * Sólo soporta un resultado
      * @access private
      * @param resource $p_queryx (query) SELECT sólo registro devuelto
      *
      */
     private function xassign($p_queryx) {
         $this->id = mysql_result($p_queryx, 0, 0);
         $this->alumno = mysql_result($p_queryx, 0, 1);
         $this->grupo = mysql_result($p_queryx, 0, 2);
         $this->fechaInscripcion = mysql_result($p_queryx, 0, 3);
         $this->periodo = mysql_result($p_queryx, 0, 4);
         $this->pagado = mysql_result($p_queryx, 0, 5);
         $this->becado = mysql_result($p_queryx, 0, 6);
         $this->status = mysql_result($p_queryx, 0, 7);

     }




     /*
      * ---------------------------------------------------------------
      * OTHER METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Vamos a obtener el ultimo mayor registro en matricula de inscripcion
      * @return int  
      */
     public function get_ultimomayor() {
         $query = "SELECT MAX(`id`) AS id FROM `INSCRIPCION`";
         $row = mysql_fetch_assoc($this->run_queryx($query));
         return $row["id"];

     }




     /**
      * Retorna el siguiente registro sugerido para matricula en inscripcion
      * por default incrementará en 1 no es recomendable cambiar este parámetro
      * a menos que sea muy necesario
      * @param int $incremento Cuanto deseas incrementar al último registro obtenido
      * @return int El id (id) sugerido 
      */
     public function get_siguienteID($incremento = 1) {
         return $this->get_ultimomayor() + 1;

     }




 }

 